package com.rgs.se.algorithm.subject;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Ren Gaoshuai
 * @ClassName Demo1
 * @Description 算法练习
 * @date 2022-01-22 13:44
 **/
public class Demo1 {

    public static void main(String[] args) {
        Demo1 demo = new Demo1();
        int[] a = {2,5,2,3,6,2};
        System.out.println(demo.subject1(a));
        //System.out.println(demo.subject2(a));
    }

    /**
     * 题目一
     * 长度为N，取值为【0，N-1】，找到其中第一个重复的数字
     * @param a
     * @return
     */
    public int subject1(int[] a){
        if (a.length < 2){
            return -1;
        }
        int count = 1;
        Map<Integer,Integer> map = new HashMap<>();
        for (int i : a) {
            if (map.keySet().contains(a[i])){
                map.put(a[i],count+1);
                return a[i];
                }else{
                map.put(a[i],1);
            }
        }
        return -1;
    }

    /**
     * 题目二
     * 给定长度N数组，其取值范围是【0，N-1】，判断该数组有无重复元素
     * 思路：没有重复就是数组求和唯一。根据数组和判断有无重复
     * @param a
     * @return
     */
    public boolean subject2(int[] a){
        int nums = 0;
        for (int i = a.length - 1; i >= 0; i--) {
            nums += a[i];
        }

        int n = a.length;
        if (((n-1)*n)/2 == nums){
            return false;
        }
        return true;
    }

    /**
     * 反转二位数组，顺时针90度
     */
    public void subject3(){

    }
}
